package com.view;

import com.model.Perpustakaan;
import com.model.Publikasi;
import com.model.TimerBacaAnggota;
import com.model.TimerBacaPublikasi;
import com.model.TimerSimpanPublikasi;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.*;

/**
 *
 * @author sony
 */
public class FrameUtama extends JFrame {
//    private PanelTambahPublikasi PanelTambahPublikasi;
//    private PanelTambahPinjaman  PanelTambahPinjaman;
//    private PanelTambahAnggota  PanelTambahAnggota;
//    private JMenuBar menuBar ;
//    private JMenu menuPublikasi ;
//    private JMenu menuAnggota ;
//    private JMenuItem menuTambahPublikasi ;
//    private JMenuItem menuTambahAnggota;

    private JMenuBar menuBar;
    private JMenu menuPublikasi;
    private JMenu menuAnggota;
    private JMenu menuPinjaman;
    private JMenuItem menuTambahPublikasi;
    private JMenuItem menuLihatPublikasi;
    private JMenuItem menuSimpanKefilePublikasi;
    private JMenuItem menuBacaDarifilePublikasi;
    private JMenuItem menuSimpanKetablePublikasi;
    private JMenuItem menuBacaDaritablePublikasi;
    private JMenuItem menuTambahAnggota;
    private JMenuItem menuLihatAnggota;
    private JMenuItem menuSimpanKefileAnggota;
    private JMenuItem menuBacaDarifileAnggota;
    private JMenuItem menuSimpanKetableAnggota;
    private JMenuItem menuBacaDaritableAnggota;
    private JMenuItem menuTambahPinjaman;
    private JMenuItem menuLihatPinjaman;
    private JMenuItem menuSimpanKefilePinjaman;
    private JMenuItem menuBacaDarifilePinjaman;
    private JMenuItem menuSimpanKetablePinjaman;
    private JMenuItem menuBacaDaritablePinjaman;
    private JMenuItem menuTambahFotoAnggota;
    private JMenuItem menuCariAnggota;

    public FrameUtama() {
        inisialisasi();
        TimerBacaPublikasi timerBacaPub = new TimerBacaPublikasi(5000);
        TimerSimpanPublikasi timerSimpanPub = new TimerSimpanPublikasi(5000);
        TimerBacaAnggota timerBacaAng = new TimerBacaAnggota(5000);
        TimerSimpanPublikasi timerSimpanAng = new TimerSimpanPublikasi(5000);
    }

    public void inisialisasi() {
        this.setSize(800, 700);
        this.setTitle("Perpustakaan public");

        menuBar = new JMenuBar();
        setJMenuBar(menuBar);

        menuPublikasi = new JMenu("Publikasi");
        menuBar.add(menuPublikasi);

        menuAnggota = new JMenu("Anggota");
        menuBar.add(menuAnggota);

        menuPinjaman = new JMenu("Pinjaman");
        menuBar.add(menuPinjaman);

        menuTambahPublikasi = new JMenuItem("Tambah Publikasi");
        menuPublikasi.add(menuTambahPublikasi);
        menuTambahPublikasi.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                menuTambahPublikasiAction();
            }
        });

        menuLihatPublikasi = new JMenuItem("Lihat Publikasi");
        menuPublikasi.add(menuLihatPublikasi);
        menuLihatPublikasi.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                menuLihatPublikasiAction();
            }
        });

        menuSimpanKefilePublikasi = new JMenuItem("Simpan ke File");
        menuPublikasi.add(menuSimpanKefilePublikasi);
        menuSimpanKefilePublikasi.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                try {
                    menuSimpanKefilePublikasiAction();
                } catch (IOException ex) {
                    Logger.getLogger(FrameUtama.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });

        menuBacaDarifilePublikasi = new JMenuItem("Baca Dari File");
        menuPublikasi.add(menuBacaDarifilePublikasi);
        menuBacaDarifilePublikasi.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                try {
                    menuBacaDarifilePublikasiAction();
                } catch (SQLException ex) {
                    Logger.getLogger(FrameUtama.class.getName()).log(Level.SEVERE, null, ex);
                } catch (Exception ex) {
                    Logger.getLogger(FrameUtama.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
        menuSimpanKetablePublikasi = new JMenuItem("Simpan ke Table");
        menuPublikasi.add(menuSimpanKetablePublikasi);
        menuSimpanKetablePublikasi.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                try {
                    menuSimpanKetablePublikasiAction();
                } catch (SQLException ex) {
                    Logger.getLogger(FrameUtama.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
        menuBacaDaritablePublikasi = new JMenuItem("Baca dari Table");
        menuPublikasi.add(menuBacaDaritablePublikasi);
        menuBacaDaritablePublikasi.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                try {
                    menuBacaDaritablePublikasiAction();
                } catch (Exception ex) {
                    Logger.getLogger(FrameUtama.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });

        //**********************************************************//
        menuTambahAnggota = new JMenuItem("Tambah Anggota");
        menuAnggota.add(menuTambahAnggota);
        menuTambahAnggota.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                menuTambahAnggotaAction();
            }
        });
        menuLihatAnggota = new JMenuItem("Lihat Anggota");
        menuAnggota.add(menuLihatAnggota);
        menuLihatAnggota.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                menuLihatPublikasiAction();
            }
        });
        menuSimpanKefileAnggota = new JMenuItem("Simpan ke File ");
        menuAnggota.add(menuSimpanKefileAnggota);
        menuSimpanKefileAnggota.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                try {
                    menuSimpanKefileAnggotaAction();
                } catch (IOException ex) {
                    Logger.getLogger(FrameUtama.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });

        menuBacaDarifileAnggota = new JMenuItem("Baca Dari File");
        menuAnggota.add(menuBacaDarifileAnggota);
        menuBacaDarifileAnggota.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                menuBacaDarifileAnggotaAction();
            }
        });
        menuSimpanKetableAnggota = new JMenuItem("Simpan ke Table");
        menuAnggota.add(menuSimpanKetableAnggota);
        menuSimpanKetableAnggota.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                menuSimpanKetableAnggotaAction();
            }
        });
        menuBacaDaritableAnggota = new JMenuItem("Baca dari Table");
        menuAnggota.add(menuBacaDaritableAnggota);
        menuBacaDaritableAnggota.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                menuBacaDaritableAnggotaAction();
            }
        });
        menuTambahFotoAnggota = new JMenuItem("Tambah Foto Anggota");
        menuAnggota.add(menuTambahFotoAnggota);
        menuTambahFotoAnggota.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                menuTambahFotoAnggotaAction();
            }
        });

        menuCariAnggota = new JMenuItem("Cari Anggota");
        menuAnggota.add(menuCariAnggota);
        menuCariAnggota.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                menuCariAnggotaDariTableAction();
            }
        });
        //**********************************************************//
        menuTambahPinjaman = new JMenuItem("Tambah Peminjam");
        menuPinjaman.add(menuTambahPinjaman);
        menuTambahPinjaman.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                menuTambahPinjamanAction();
            }
        });
        menuLihatPinjaman = new JMenuItem("Lihat Pinjaman");
        menuPinjaman.add(menuLihatPinjaman);
        menuLihatPinjaman.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                menuLihatPublikasiAction();
            }
        });
        menuSimpanKefilePinjaman = new JMenuItem("Simpan ke File ");
        menuPinjaman.add(menuSimpanKefilePinjaman);
        menuSimpanKefilePinjaman.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                menuSimpanKefilePinjamanAction();
            }
        });

        menuBacaDarifilePinjaman = new JMenuItem("Baca Dari File");
        menuPinjaman.add(menuBacaDarifilePinjaman);
        menuBacaDarifilePinjaman.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                menuBacaDarifilePinjamanAction();
            }
        });
        menuSimpanKetablePinjaman = new JMenuItem("Simpan ke Table");
        menuPinjaman.add(menuSimpanKetablePinjaman);
        menuSimpanKetablePinjaman.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                menuSimpanKetablePinjamanAction();
            }
        });
        menuBacaDaritablePinjaman = new JMenuItem("Baca dari Table");
        menuPinjaman.add(menuBacaDaritablePinjaman);
        menuBacaDaritablePinjaman.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                menuBacaDaritablePinjamanAction();
            }
        });
        TimerBacaPublikasi timerBaca = new TimerBacaPublikasi(5000);
        TimerSimpanPublikasi timerSimpan = new TimerSimpanPublikasi(5000);
    }

    public void menuTambahPublikasiAction() {

        JDialog testFrame = new JDialog();
        PanelTambahPublikasi testPanel = new PanelTambahPublikasi();
        testFrame.getContentPane().add(testPanel);
        testFrame.setTitle("PERPUSTAKAAN ");
        testFrame.setSize(500, 400);
        testFrame.setVisible(true);
    }

    public void menuTambahAnggotaAction() {
        JDialog test2 = new JDialog();
        PanelTambahAnggota testPanel2 = new PanelTambahAnggota();
        test2.getContentPane().add(testPanel2);
        test2.setTitle("ANGGOTA PERPUSTAKAAN ");
        test2.setSize(450, 300);
        test2.setVisible(true);
    }

    public void menuTambahFotoAnggotaAction() {
        JFrame frame = new JFrame("Foto Anggota");
        frame.setLayout(new BorderLayout());
        PanelTambahFotoAnggota gc = new PanelTambahFotoAnggota();
        frame.add(gc, BorderLayout.CENTER);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(600, 600);
        frame.setVisible(true);

    }

    public void menuTambahPinjamanAction() {
        JDialog test1 = new JDialog();
        PanelTambahPinjaman testPanel3 = new PanelTambahPinjaman();
        test1.getContentPane().add(testPanel3);
        test1.setTitle("PEMINJAM BUKU");
        test1.setSize(430, 300);
        test1.setVisible(true);

    }

    public void menuLihatPublikasiAction() {
        JDialog test3 = new JDialog();
        ArrayList<Publikasi> data = new ArrayList<Publikasi>(Perpustakaan.DAFTAR_PUBLIKASI);
        PanelLihatPublikasi plp = new PanelLihatPublikasi(data);
        test3.getContentPane().add(plp);
        test3.setTitle("Lihat Publikasi");
        test3.setSize(500, 400);
        test3.setVisible(true);
    }

    public void menuSimpanKefilePublikasiAction() throws IOException {
        Perpustakaan.simpanFilePublikasi();
    }

    public void menuBacaDarifilePublikasiAction() throws SQLException, Exception {
        JFrame testFrame = new JFrame();
        PanelBacaPublikasi testPanel = new PanelBacaPublikasi();
        testFrame.getContentPane().add(testPanel);
        testFrame.setSize(500, 400);
        testFrame.setVisible(true);
        testFrame.setTitle("Panel Baca Publikasi");
    }

    public void menuSimpanKetablePublikasiAction() throws SQLException {
        Perpustakaan.simpanTabelPublikasi();
    }

    public void menuBacaDaritablePublikasiAction() throws SQLException, Exception {
        Perpustakaan.bacaTabelPublikasi();
    }

    //**********************************************************//
    public void menuSimpanKefileAnggotaAction() throws IOException {
        Perpustakaan.simpanFileAnggota();
    }

    public void menuBacaDarifileAnggotaAction() {
        JFrame testFrame = new JFrame();
        PanelBacaAnggota testPanel = new PanelBacaAnggota();
        testFrame.getContentPane().add(testPanel);
        testFrame.setSize(500, 400);
        testFrame.setVisible(true);
        testFrame.setTitle("Panel Baca Anggota");
    }

    public void menuSimpanKetableAnggotaAction() {
        Perpustakaan.simpanTabelAnggota();
    }

    public void menuBacaDaritableAnggotaAction() {
        Perpustakaan.bacaTabelAnggota();
    }

    //**********************************************************//
    public void menuSimpanKefilePinjamanAction() {
    }

    public void menuBacaDarifilePinjamanAction() {
        JFrame testFrame = new JFrame();
        PanelBacaPinjaman testPanel = new PanelBacaPinjaman();
        testFrame.getContentPane().add(testPanel);
        testFrame.setSize(500, 400);
        testFrame.setVisible(true);
        testFrame.setTitle("Panel Baca Pinjaman");
    }

    public void menuSimpanKetablePinjamanAction() {
    }

    public void menuBacaDaritablePinjamanAction() {
    }

    //***********************************************************//
    public void menuCariAnggotaDariTableAction() {
        JFrame testFrame = new JFrame();
        PanelCariAnggota testAnggota = new PanelCariAnggota();
        testFrame.getContentPane().add(testAnggota);
        testFrame.setSize(600, 400);
        testFrame.setVisible(true);
        testFrame.setTitle("Panel Cari Anggota");
    }
}
